/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.conversores;

import Mproyectos.controladores.ControladorUsuario;
import Mproyectos.entidades.Usuario;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 * Convertir para la clase Usuario
 */
@FacesConverter("conversorUsuario")
public class ConversorUsuario implements Converter {

    /**
     * Devuelve la Usuario como objeto cuando se envia el nombre en texto
     *
     * @param context
     * @param component
     * @param value
     * @return La Usuario que en la base de datos tiene ese nombre
     */
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        // Cargar el controlador del Usuario 
        ControladorUsuario controlador = (ControladorUsuario) context.getApplication().getELResolver().
                getValue(context.getELContext(), null, "controladorUsuario");

        // Obtener la fachada y buscarla
        return controlador.getFachadaUsuario().buscar(value);
    }

    /**
     * Retorna el nombre del Usuario si el objeto enviado es un Usuario, si no
     * devuelve la cadena desconocido
     *
     * @param context
     * @param component
     * @param value
     * @return El nombre del usuario
     */
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        // Verifica si es del tipo Usuario y le saca el nombre 
        if (value instanceof Usuario) {
            Usuario usuario = (Usuario) value;
            return usuario.getNombre();
        }

        return "Desconocido";
    }
}
